// Copyright 2012 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
{namespace gitiles}

/**
 * Detail page about a single revision.
 */
{template .revisionDetail stricthtml="false"}
  {@param title: ?}  /** human-readable revision name. */
  {@param repositoryName: ?}  /** name of this repository. */
  {@param? menuEntries: ?}  /** menu entries. */
  {@param? customVariant: ?}  /** variant name for styling. */
  {@param breadcrumbs: ?}  /** breadcrumbs for this page. */
  {@param? hasBlob: ?}  /** set to true if the revision or its peeled value is a blob. */
  {@param? hasReadme: ?}  /** set to true if the treeDetail has readmeHtml. */
  {@param objects: ?}  /** list of objects encountered when peeling this object. Each object has a
      "type" key with one of the org.eclipse.jgit.lib.Contants.TYPE_* constant strings, and a "data"
      key with an object whose keys correspond to the appropriate object detail template from
      ObjectDetail.soy. */
  {@inject staticUrls: ?}
{if $hasBlob}
  {call .header data="all"}
    {param css: [$staticUrls.PRETTIFY_CSS_URL] /}
  {/call}
{elseif $hasReadme}
  {call .header data="all"}
    {param css: [$staticUrls.DOC_CSS_URL, $staticUrls.PRETTIFY_CSS_URL] /}
  {/call}
{else}
  {call .header data="all" /}
{/if}

{for $object in $objects}
  {switch $object.type}
    {case 'commit'}
      {call .commitDetail data="$object.data" /}
    {case 'tree'}
      {call .treeDetail data="$object.data" /}
    {case 'blob'}
      {call .blobDetail data="$object.data" /}
    {case 'tag'}
      {call .tagDetail data="$object.data" /}
    {default}
      <div class="error">
        {msg desc="Error message for an unknown object type"}Object has unknown type.{/msg}
      </div>
  {/switch}
{/for}

{call .footer}
  {param customVariant: $customVariant /}
{/call}
{/template}
